#pragma once

#include "glad/glad.h"
#include "GLFW/glfw3.h"

namespace Alice
{

/* 
    2D 纹理类
*/ 
class Texture2D
{
public:
    // 纹理对象 ID
    unsigned int Id;
    // 纹理的宽和高
    unsigned int width, height;
    // 纹理的格式
    unsigned int internal_format;
    // 加载的图片格式
    unsigned int image_format;
    // 纹理的配置
    // 纹理超出范围时的处理方式
    unsigned int wrap_S;
    unsigned int wrap_T;
    // 纹理处理像素边缘的方式
    unsigned int filter_min;
    unsigned int filter_max;
    
    Texture2D();
    /*
        使用图片数据生成纹理
    */
    void Generate(unsigned int width, unsigned int height, unsigned char* image_data);
    /*
        激活纹理对象
    */
    void Bind() const;
};

} // namespace Alice
